package cn.sc.summer.domain.role;

import cn.sc.summer.constant.model.PageResult;
import cn.sc.summer.protocol.form.role.RoleBindForm;
import cn.sc.summer.protocol.form.role.RoleForm;
import cn.sc.summer.protocol.form.role.RoleGetForm;
import cn.sc.summer.protocol.params.SysApiInfo;
import cn.sc.summer.protocol.vo.role.RoleInfoVO;

import java.util.List;

/**
 * 接口：角色管理接口
 *
 * @author a-xin
 * @date 2024/8/14 16:27
 */
public interface SysRoleService {

    /**
     * 新增角色信息
     *
     * @param form 角色信息
     * @return 角色ID
     */
    String addRole(RoleForm form);

    /**
     * 更新角色信息
     *
     * @param form 角色信息
     * @return 角色ID
     */
    Boolean updateRole(RoleForm form);

    /**
     * 删除角色信息
     *
     * @param roleId 角色ID
     * @return 是否成功
     */
    Boolean delRole(String roleId);

    /**
     * 获取所有角色信息
     *
     * @param form 搜索表单
     * @return 角色信息
     */
    PageResult<RoleInfoVO> getAllRole(RoleGetForm form);

    /**
     * 角色绑定路由信息
     *
     * @param form 角色和路由信息
     * @return 是否成功
     */
    Boolean roleBindRoute(RoleBindForm form);

    /**
     * 校验角色信息是否正确
     *
     * @param roleIds 角色ID
     */
    void checkRole(List<String> roleIds);

    /**
     * 获取角色对应绑定所有apiID
     *
     * @param roleIds 角色ID
     * @return api信息
     */
    List<SysApiInfo> getApiInfoByRoleIds(List<String> roleIds);
}
